// 引入系统模块
const fs = require('fs')
const path = require('path')
const promisify = require('util').promisify

// 引入第三方模块
const mime = require('mime')
const moment = require('moment')

// 将普通函数处理成异步promise函数
const readFile = promisify(fs.readFile)
const writeFile = promisify(fs.writeFile)

// 获取data.json数据功能，并将文件转换为json对象
async function getData() {
  let Data = await readFile(path.join(__dirname, '../data/data.json'), 'utf8')
  return Data = JSON.parse(Data)
}

// 将data写入data.json文件中
async function writeData(data) {
  data = JSON.stringify(data)
  return writeFile(path.join(__dirname, '../data/data.json'), data)
}

// 读取文件的内容
async function getPage(name, res) {
  let data = await readFile(path.join(__dirname, '../', name))
  res.writeHead(200, {
    'content-type': mime.getType(name)
  }).end(data)
}

// 添加留言
async function addInfo(info, getData, writeData, res) {
  info.id = Date.now()
  info.created = moment().format('YYYY年MM月DD日 HH:mm:ss')
  let data = await getData()
  data.list.push(info)
  await writeData(data)
  res.writeHead(302, {
    location: '/index'
  }).end()
}

// 导出
module.exports = {
  getData,
  getPage,
  writeData,
  addInfo
}